#include "T_CaptionTableViewModel.h"
#include <QTime>
#include <QDebug>
T_CaptionTableViewModel::T_CaptionTableViewModel(QObject* parent)
    : QAbstractTableModel(parent)
{
    // 初始化表头
    m_headers << "时间" << "内容";

}

T_CaptionTableViewModel::~T_CaptionTableViewModel() {}

int T_CaptionTableViewModel::rowCount(const QModelIndex&) const
{
    return m_data.size();
}

int T_CaptionTableViewModel::columnCount(const QModelIndex&) const
{
    return m_headers.size();
}

QVariant T_CaptionTableViewModel::data(const QModelIndex& index, int role) const {
    if (!index.isValid()) return QVariant();
    const auto& item = m_data.at(index.row());

    if (role == Qt::DisplayRole && index.column() == 0) {
        // 只显示 time 部分，格式 hh:mm:ss.zzz
        return item.timestamp.time().toString("hh:mm:ss.zzz");
    }
    else if (role == Qt::DisplayRole && index.column() == 1) {
        return item.content;
    }
    else if (role == Qt::TextAlignmentRole) {
        return Qt::AlignCenter;
    }
    return QVariant();
}


void T_CaptionTableViewModel::appendData(const SubtitleItem& item) {
    // 通知视图开始插入行（从 rowCount() 到 rowCount()，即插入一行）

    qDebug() << "插入新字幕:" << item.timestamp << item.content;
    beginInsertRows(QModelIndex(), rowCount(), rowCount());
    m_data.append(item);
    endInsertRows();

    // 可选：通知特定单元格更新（非必须）
    emit dataChanged(index(rowCount()-1, 0), index(rowCount()-1, 1));
}

QVariant T_CaptionTableViewModel::headerData(int section, Qt::Orientation orientation, int role) const
{
    if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
        return m_headers.value(section);
    }
    return QAbstractTableModel::headerData(section, orientation, role);
}

void T_CaptionTableViewModel::clearData() {
    qDebug() << "clearData开始";
    beginResetModel();
    m_data.clear();
    endResetModel();
    qDebug() << "clearData结束";
}
